#素数又称质数。一个大于1的自然数，除了1和它自身外，不能被其他自然数整除的数叫做质数；否则称为合数。
#（规定1既不是质数也不是合数）
# 厄拉多塞受此启发创造了这样一种与众不同的寻找素数的方法中，然后在2的上面画一个圆圈，再划去2的倍数；第一个既未画圈又没有
# # 被划去的数是3,将它画圈，再划去3的倍数；现在既未画圈又没有被划去的第一个数是
# # 5,将它画圈，并划去5的倍数……以此类推，直到所有小于或等于n的各数都画了圈或被划去为止。这时，表中画了圈的以及未划去的那：先将2～n的各个自然数放入表些数正好就是小于n的素数。这个简单而高效的寻找素数的方法被称作厄拉多塞筛法。
n = int(input('请输入一个自然数:'))#输入筛选的上界
a = list(range(2, n + 1))#生成数表
i = 0
while i < len(a):#创建外层的计数型循环结构﹐循环计数器变量为i,初始值为0
    j = i + 1
    while j < len(a):#创建内层的计数型循环结构，循环计数器变量为j,初始值为i+1
        if a[j] % a[i] == 0:#创建内层循环的循环体,判断如果a[ j ]是a[ i ]的倍数﹐就将a[ j ]删除;否则就让计数器j增加1。
            a.pop(j)#a.pop(i)用于移除列表a中第j个元素,这里删除的是一个合数
        else:
            j = j + 1
    i = i + 1#让外层循环的计数器i增加1,然后转到外层循环的开始处继续下一轮循环
print('在自然数2~%d之间找到%d个素数。列表如下：' % (n, len(a)))#输出素数
print(a)
